Storage media, such as DVD and CD-ROM, are used to store vast amounts of information that need to be accessed in real time by various applications such as computer game applications. A storage medium may contain data of various media types such as audio, video, text, and so on. The data of the various media types often need to be streamed to an application in real time so that the application can render the media in a time sensitive manner. For example, a video game may need to render the images of a scene at the same time as the sounds of the scene are rendered. To read the data, an application executing on a computing device may interface with a storage medium driver that in turn interfaces with a storage medium reading device (e.g., a DVD reader) to read the data of the storage medium. The application requests the storage medium driver to read data from a certain unit of data (e.g., file or sector) of the storage medium currently being accessed by (e.g., inserted into) the storage medium reading device. The storage medium driver directs the storage medium reading device to retrieve the data from the storage medium. After a successful read, the storage medium driver provides the read data to the application.
It can, however, be difficult for a storage medium reading device to read the data from a storage medium that is damaged, which can often occur as a result of user handling. Although a removable storage medium allows flexibility to access different storage media and to move the storage media from one device to another, the handling of the storage media by a person often results in damage, such as scratches, dirt, and so on, to the storage media. To help minimize the adverse effects of damage to storage media, developers use various techniques to help ensure that data can be read from a storage medium even though it is damaged in some way. For example, a storage medium driver may initially attempt to read a unit of the storage medium at a high speed. If the initial attempt to access a file fails, the storage medium driver may retry the attempt a few more times. If those attempts fail, the storage medium driver may attempt to read the unit at a lower speed which may result in a successful read of the unit. As another example of an attempt to minimize adverse effects of damage, the provider of a storage medium may store important files redundantly on the storage medium. For example, when the storage medium is a DVD, the provider may store an important unit on an outer track of the DVD and a copy of that important unit on an inner track of the DVD. In this way, if one of the copies of the unit is damaged, the storage medium driver can attempt to read the unit from the other copy.
These attempts to minimize the adverse effects of damage to a storage medium often result in the successful reading of data that would otherwise be unsuccessful. However, such attempts may take a considerable amount of time and result in the data being provided to the application in an untimely manner.